package com.youlai.boot.bmp.service;

import com.aizuda.bpm.engine.entity.FlwProcess;
import com.youlai.boot.bmp.model.entity.FormWorkflowBinding;
import com.youlai.boot.bmp.model.form.FormWorkflowBindingForm;
import com.youlai.boot.bmp.model.query.FlwProcessQuery;
import com.youlai.boot.bmp.model.query.FormWorkflowBindingQuery;
import com.youlai.boot.bmp.model.vo.BizProcessVo;
import com.youlai.boot.bmp.model.vo.FormWorkflowBindingVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 单与工作流绑定服务类
 *
 * @author rabit
 * @since 2025-11-04 16:22
 */
public interface FormWorkflowBindingService extends IService<FormWorkflowBinding> {

    /**
     *单与工作流绑定分页列表
     *
     * @return {@link IPage<FormWorkflowBindingVO>} 单与工作流绑定分页列表
     */
    IPage<FormWorkflowBindingVO> getFormWorkflowBindingPage(FormWorkflowBindingQuery queryParams);

    /**
     * 获取单与工作流绑定表单数据
     *
     * @param id 单与工作流绑定ID
     * @return 单与工作流绑定表单数据
     */
     FormWorkflowBindingForm getFormWorkflowBindingFormData(Long id);

    /**
     * 新增单与工作流绑定
     *
     * @param formData 单与工作流绑定表单对象
     * @return 是否新增成功
     */
    boolean saveFormWorkflowBinding(FormWorkflowBindingForm formData);

    /**
     * 修改单与工作流绑定
     *
     * @param id   单与工作流绑定ID
     * @param formData 单与工作流绑定表单对象
     * @return 是否修改成功
     */
    boolean updateFormWorkflowBinding(Long id, FormWorkflowBindingForm formData);

    /**
     * 删除单与工作流绑定
     *
     * @param ids 单与工作流绑定ID，多个以英文逗号(,)分割
     * @return 是否删除成功
     */
    boolean deleteFormWorkflowBindings(String ids);


    /**
     * 获取单与工作流绑定列表
     *
     * @param query 查询参数
     * @return 单与工作流绑定列表
     */
    List<BizProcessVo> getBizProcessVoList(FlwProcessQuery query);

    /**
     * 获取单与工作流绑定详情
     *
     * @param id 单与工作流绑定ID
     * @return 单与工作流绑定详情
     */
    BizProcessVo getBizProcessVoById(Long id);
}
